package com.zmn.oms.services.interfaces.serviceitem;

import com.zmn.oms.model.entity.serviceitem.OrderServiceItem;

import java.util.List;

/**
 * 类描述：订单服务项
 *
 * @author heciqi
 * @date 2018/12/5 17:08
 */
public interface OrderServiceItemService {

    /**
     * 按订单id查询扩展的产品数量
     *
     * @param orderId
     * @return
     */
    int countProExtIdByOrderId(Long orderId);

    /**
     * 主键查询
     *
     * @param itemId
     * @return
     */
    OrderServiceItem selectByPrimaryKey(Long itemId);

    /**
     * 根据订单id查询工单服务项目集合
     *
     * @param orderIdList 订单id集合
     * @return 服务项目集合
     */
    List<OrderServiceItem> listOrderServiceItemByOrderIdList(List<Long> orderIdList);

    /**
     * 根据订单id查询服务项列表
     *
     * @param orderId
     * @return
     */
    List<OrderServiceItem> listByOrderId(Long orderId);

    /**
     * 根据订单id动态查询服务项列表
     *
     * @param orderId
     * @return
     */
    List<OrderServiceItem> listDynamicByOrderId(String query, Long orderId);

    /**
     * 根据订单id查询服务项列表(主库)
     *
     * @param orderId
     * @return
     */
    List<OrderServiceItem> listByOrderIdSrcMaster(Long orderId);

    /**
     * 根据订单id，产品扩展id查询服务项列表
     *
     * @param orderId
     * @return
     */
    List<OrderServiceItem> listByOrderIdAndProExtId(Long orderId, Long proExtId);

    /**
     * 批量插入
     *
     * @param record
     * @return
     */
    Integer insertAll(List<OrderServiceItem> record);

    /**
     * 修改服务项
     *
     * @param orderServiceItem
     */
    void updateByKey(OrderServiceItem orderServiceItem);

    /**
     * 修改服务项内部价
     *
     * @param orderServiceItem
     * @return void
     * @author wangxiaokun
     */
    void updateInternalPriceByKey(OrderServiceItem orderServiceItem);

    /**
     * 主键删除
     *
     * @param itemId
     * @return
     */
    Integer deleteByPrimaryKey(Long itemId);

    /**
     * 按产品扩展id删除
     *
     * @param proExtId
     * @return
     */
    Integer deleteByProExtId(Long proExtId);

    /**
     * 按订单id删除
     *
     * @param orderId
     * @return
     */
    Integer deleteByOrderId(Long orderId);

    /**
     * 订单ID,服务项ID删除
     *
     * @param orderId
     * @param servItemId
     * @return
     */
    Integer deleteByOrderIdAndServiceItemId(Long orderId, Integer servItemId);
}
